package com.foogui.guava;

import com.google.common.collect.HashMultiset;
import com.google.common.collect.Lists;
import com.google.common.collect.Multiset;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

public class MultiSetDemo {
    @Test
    public void multiset() {
        List<String> list = Lists.newArrayList("1", "2");
        HashMultiset<String> set = HashMultiset.create();
        set.addAll(list);
        set.add("1");
        set.add("2");
        set.add("3");
        // 添加元素，指定个数
        set.add("4", 4);
        // set转数组
        System.out.println(set.stream().toArray(String[]::new));
        // 查数
        System.out.println(set.count("2"));
        // 变成真正的set
        System.out.println(set.elementSet());
        // 删除所有满足条件元素
        set.removeIf(ele -> ele.equals("1"));
        // 遍历同时获取元素数量
        Set<Multiset.Entry<String>> entries = set.entrySet();
        entries.forEach(ele -> {
            System.out.println("元素：" + ele.getElement() + "数量：" + ele.getCount());
        });
        // 是否包含元素
        System.out.println(set.contains("4"));

        set.clear();
        //可以通过设置元素的计数，来批量的添加元素，当然能加也能减
        set.setCount("foogui", 3);
        set.setCount("wx", 5);
        //multiset所有元素的个数
        System.out.println("multiset.size():" + set.size());
        //multiset去重后的元素个数
        System.out.println("elementSet().size():" + set.elementSet().size());
    }
}
